home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / CD32 / CD32_Support / examples / SA_Examples / cd / CDTest / cdtest.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-10-27  |  6.0 KB  |  166 lines

  1. /*
  2. **  cd.device Test
  3. **  Written by John J. Szucs
  4. **  Copyright © 1993-1999 Amiga, Inc.
  5. **  All Rights Reserved
  6. */
  7.  
  8. /*
  9. **  Constants
  10. */
  11.  
  12. #define PROGRAM_NAME        "cdtest"        /* Program name */
  13. #define KICKSTART_VERSION   40              /* Minimum Kickstart version */
  14. #define WORKBENCH_VERSION   40              /* Minimum Workbench version */
  15. #define REXX_VERSION        36              /* Minimum ARexx version */
  16.  
  17. #define REXXCOMMAND_LENGTH  32              /* Length of ARexx command buffer */
  18. #define REXX_STEM_BUFFER 256                /* Length of buffer for ARexx stem variable names */
  19. #define REXX_RESULT_BUFFER 256              /* Length of ARexx result string */
  20. #define REXXSCRIPT_EXTENSION "cd"           /* Extension for ARexx scripts */
  21.  
  22. #define CDCONFIG_MAXTAGS    32              /* Maximum number of tags for CD_CONFIG */
  23.  
  24. #define COOKIE_CHANGEINT    0xC0EDBABE      /* Cookie for change interrupt data */
  25. #define COOKIE_FRAMEINT     0xB16B00B5      /* Cookie for frame interrupt data */
  26.  
  27. /* Dummy cd.device calls */
  28. /* #define DUMMY */
  29.  
  30. /*
  31. **  Macros
  32. */
  33.  
  34. #ifndef FORVER
  35. #define FOREVER for (;;)                    /* An -=*RJ*=-ism */
  36. #endif /* FOREVER */
  37.  
  38. /*
  39. **  Structure definitions
  40. */
  41.  
  42. /* Command table entry */
  43. struct commandEntry {
  44.     char    *command;                       /* Command */
  45.     STRPTR  (*function)(struct RexxMsg *rxMsg,char *args,LONG *error);    /* Function */
  46. };
  47.  
  48. /*
  49. **  Global definitions
  50. */
  51.  
  52. #ifdef MAIN
  53.  
  54. struct RDArgs           *rdArgs=NULL;       /* dos.library/ReadArgs()
  55.                                                control structure */
  56.  
  57. struct IOStdReq         *cdRequest=NULL;    /* cd.device I/O request */
  58. struct MsgPort          *cdPort=NULL;       /* cd.device reply port */
  59. BOOL                    cdOpen=FALSE;       /* cd.device open? */
  60.  
  61. AREXXCONTEXT            rexxContext;        /* ARexx context */
  62. char                    rexxResult[REXX_RESULT_BUFFER];
  63.                                             /* Buffer for ARexx result */
  64.  
  65. struct Interrupt        changeInterrupt;    /* Disk change interrupt */
  66. ULONG                   changeIntCall=0L;   /* Call count for
  67.                                                disk change interrupt */
  68. ULONG                   changeIntBadData=0L;/* Bad data count for
  69.                                                disk change interrupt */
  70.  
  71. struct Interrupt        frameInterrupt;     /* Frame interrupt */
  72. ULONG                   frameIntCall=0L;    /* Call count for
  73.                                                frame interrupt */
  74. ULONG                   frameIntBadData=0L; /* Bad data count for
  75.                                                frame interrupt */
  76.  
  77. BOOL                    debugMode=FALSE;    /* Debugging mode */
  78. BOOL                    noCD=FALSE;         /* Dummy cd.device mode */
  79.  
  80. #else
  81.  
  82. extern struct RDArgs    *rdArgs;
  83.  
  84. extern struct IOStdReq  *cdRequest;
  85. extern struct MsgPort   *cdPort;
  86. extern BOOL             cdOpen;
  87.  
  88. extern AREXXCONTEXT     rexxContext;
  89.  
  90. extern char             rexxResult[];
  91.  
  92. extern struct Interrupt changeInterrupt;
  93. extern ULONG            changeIntCall;
  94. extern ULONG            changeIntBadData;
  95.  
  96. extern struct Interrupt frameInterrupt;
  97. extern ULONG            frameIntCall;
  98. extern ULONG            frameIntBadData;
  99.  
  100. extern BOOL             debugMode;
  101. extern BOOL             noCD;
  102.  
  103. #endif /* MAIN */
  104.  
  105. /*
  106. **  Prototypes
  107. */
  108.  
  109. /* from main.c */
  110. void main(int argc,char *argv[]);
  111. void goodbye(int returnCode);
  112.  
  113. /* from event.c */
  114. void eventLoop(void);
  115.  
  116. /* from debug.c */
  117. STRPTR testStemVarInt(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  118.  
  119. /* from args.c */
  120. struct RDArgs *obtainArgs(STRPTR string,STRPTR template,void *options,ULONG optionsSize);
  121. void releaseArgs(struct RDArgs *rdArgs);
  122. ULONG strToMSF(STRPTR string);
  123. LONG setStemVarInt(struct RexxMsg *rxMsg,STRPTR base,STRPTR stem,LONG value);
  124. LONG setStemVarIntArray(struct RexxMsg *rxMsg,STRPTR base,LONG index,STRPTR stem,LONG value);
  125.  
  126. /* from bsprintf.a */
  127. void bsprintf(char *buffer,char *format,...);
  128.  
  129. /* from cd.c */
  130. STRPTR cdAddChangeInt(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  131. STRPTR cdAddFrameInt(struct RexxMsg *rxMsg,STRPTR  args,LONG *error);
  132. STRPTR cdAttenuate(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  133. STRPTR cdChangeNum(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  134. STRPTR cdChangeState(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  135. STRPTR cdConfig(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  136. STRPTR cdEject(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  137. STRPTR cdGetGeometry(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  138. STRPTR cdInfo(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  139. STRPTR cdMotor(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  140. STRPTR cdPause(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  141. STRPTR cdPlayLSN(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  142. STRPTR cdPlayMSF(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  143. STRPTR cdPlayTrack(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  144. STRPTR cdProtStatus(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  145. STRPTR cdQCodeLSN(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  146. STRPTR cdQCodeMSF(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  147. STRPTR cdRead(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  148. STRPTR cdReadXL(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  149. STRPTR cdRemChangeInt(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  150. STRPTR cdRemFrameInt(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  151. STRPTR cdSearch(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  152. STRPTR cdSeek(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  153. STRPTR cdTOCLSN(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  154. STRPTR cdTOCMSF(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  155.  
  156. /* from verify.c */
  157. BOOL byteVerify(UBYTE *buffer,ULONG length,UBYTE byte);
  158. BOOL wordVerify(UBYTE *buffer,ULONG length,UWORD word);
  159. BOOL offsetVerify(UBYTE *buffer,ULONG length,ULONG start);
  160.  
  161. /* from interrupt.c */
  162. void __asm __interrupt __saveds changeInterruptCode(register __a1 APTR intData);
  163. void __asm __interrupt __saveds frameInterruptCode(register __a1 APTR intData);
  164. STRPTR getChangeInt(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  165. STRPTR getFrameInt(struct RexxMsg *rxMsg,STRPTR args,LONG *error);
  166.